package com.Stash.Config;

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;

import javax.sql.DataSource;

// spring 管理的jdbc格式内容 配置
public class JdbcConfig {

    @Value("com.mysql.jdbc.Driver") // 用于修饰普通变量，给普通变量附加初始值
    private String driver;
//    @Value("jdbc:mysql://localhost:3306/management?serverTimezone=UTC&amp;useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=false") // 用于修饰普通变量，给普通变量附加初始值
    @Value("jdbc:mysql://localhost:3306/stash?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true")
    private String Url;
    @Value("root") // 用于修饰普通变量，给普通变量附加初始值
    private String user;
    @Value("root") // 用于修饰普通变量，给普通变量附加初始值
    private String password;

    @Value("10") // 用于修饰普通变量，给普通变量附加初始值
    private Integer initialSize; // 初始化连接池数量

    @Value("20") // 用于修饰普通变量，给普通变量附加初始值
    private Integer MaxActive; // 连接池的最大连接数

    @Value("3000") // 用于修饰普通变量，给普通变量附加初始值
    private Integer MaxWait; // 连接池最大的等待时间

    @Bean //用与修饰方法，将该方法变成一个bean容器
    // 该方法用于整合druid 数据池
    public DataSource dataSource(){

        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(driver);
        dataSource.setUrl(Url);
        dataSource.setUsername(user);
        dataSource.setPassword(password);
        dataSource.setInitialSize(initialSize);
        dataSource.setMaxActive(MaxActive);
        dataSource.setMaxWait(MaxWait);
        return  dataSource;
    }

    @Bean("Storage")   // 事务管理器
    public PlatformTransactionManager transactionManager(DataSource dataSource){
        DataSourceTransactionManager ds = new DataSourceTransactionManager();
        ds.setDataSource(dataSource);
        return ds;
    }



}
